home *** CD-ROM | disk | FTP | other *** search
/ Aminet 21 / Aminet 21 (1997)(GTI - Schatztruhe)[!][Oct 1997].iso / Aminet / dev / misc / gms_dev.lha / GMS / Utils / IceBreaker / Source / IceAssembler.asm next >
Encoding:
Assembly Source File  |  1997-07-08  |  36.3 KB  |  1,351 lines

  1. ;IceBreaker Assembler Source
  2. ;---------------------------
  3. ;Link this file with IceBreaker.c.
  4. ;CASE sensitivity ON.
  5.  
  6.     INCDIR    "INCLUDES:"
  7.     INCLUDE    "exec/exec_lib.i"
  8.     INCLUDE    "dos/dos_lib.i"
  9.     INCLUDE    "libs/graphics_lib.i"
  10.     INCLUDE    "games/games_lib.i"
  11.     INCLUDE    "games/games.i"
  12.     INCLUDE    "games/debug.i"
  13.     INCLUDE    "games/gamesbase.i"
  14.     INCLUDE    "games/tasks.i"
  15.  
  16.     ;The following values are defined by us so that the C source can
  17.     ;access them.
  18.  
  19.     xdef    _libDebugMessage
  20.     xdef    _libErrorMessage
  21.     xdef    _libStepBack
  22.     xdef    _DebugList
  23.     xdef    _GFXBase
  24.  
  25.     ;The following values are defined in the C source.
  26.  
  27.     xref    _DOSBase
  28.     xref    _GMSBase
  29.     xref    _SysBase
  30.     xref    _conhandle
  31.  
  32.     SECTION    IceAssembler,CODE    ;SECTION __MERGED,CODE
  33.  
  34. WText    MACRO        ;Simple macro for nice looking source.
  35.     dc.b    \1,0
  36.     even
  37.     ENDM
  38.  
  39. ;===================================================================================;
  40. ;                             INTERCEPT DEBUG MESSAGE
  41. ;===================================================================================;
  42. ;Function: Receives a debug message, copies it to the buffer and then sends a
  43. ;       message to our main task, which tells it new data has appeared in the
  44. ;       buffer.  This function needs to be very very fast.
  45. ;
  46. ;Requires: d7 = Debug type in low word, flags in high word.
  47. ;       a5 = Message string if type of Error/Formatted/Message.
  48. ;Returns:  Nothing.
  49.  
  50. _libDebugMessage:
  51.     cmp.w    #DBG_END,d7    ;d7 = If (Type < 0) or (Type > DBG_End-1)
  52.     bcc.s    .exit    ;>> = No, it's safe.
  53.     tst.w    gb_BlitterUsed(a6)    ;a6 = Blitter allocated?
  54.     beq.s    .debug    ;>> = No, safe.
  55.     MOVEM.L    D0-D7/A0-A6,-(SP)
  56.     move.l    _GFXBase(pc),a6    ;a6 = Graphics base.
  57.     CALL    DisownBlitter    ;>> = Disown the blitter.
  58.     CALL    WaitBlit
  59.     bsr.s    .debug    ;>> = Now we can send the messaage.
  60.     move.l    _GFXBase(pc),a6    ;a6 = Graphics base.
  61.     CALL    OwnBlitter
  62.     CALL    WaitBlit
  63.     MOVEM.L    (SP)+,D0-D7/A0-A6
  64. .exit    rts
  65.  
  66. .debug    MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  67.     move.l    _SysBase,a6    ;a6 = Exec Base.
  68.     CALL    Forbid    ;>> = Halt all tasks for a moment.
  69.  
  70.     move.l    d7,d6    ;d6 = Save flags.
  71.     and.l    #$0000ffff,d7    ;d7 = Get rid of special flags.
  72.     bsr    Stepper    ;>> = Function stepper (print step).
  73.     lea    _DebugList(pc),a6    ;a6 = Pointer to debug list.
  74.     mulu    #DL_SIZEOF,d7    ;d7 = (Type)*DL_SIZEOF
  75.     move.l    DL_Print(a6,d7.l),a6    ;a6 = Printer for this type.
  76.     jsr    (a6)    ;>> = Go to the printer.
  77.     bsr    NewLine    ;>> = Write new line.
  78.  
  79.     and.l    #STEP,d6    ;d6 = Step necessary?
  80.     beq.s    .done    ;>> = Nope.
  81.     move.l    _GMSBase,a6    ;a6 = GMSBase.
  82.     CALL    FindGMSTask    ;>> = Find this task.
  83.     tst.l    d0    ;d0 = Check if the node exists.
  84.     beq.s    .done    ;>> = No.
  85.     move.l    d0,a0    ;a0 = Pointer to GMS task node.
  86.     addq.w    #1,GT_DebugStep(a0)    ;a0 = (DebugStep)+1
  87.  
  88. .done    move.l    _SysBase,a6    ;a6 = Exec Base.
  89.     CALL    Permit    ;>> = Give back multi-tasking.
  90.     MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  91.     rts
  92.  
  93. ;===================================================================================;
  94. ;                             INTERCEPT ERROR MESSAGE
  95. ;===================================================================================;
  96. ;Function: Receives an error number and prints it out.
  97. ;Requires: d0.l = Error code.
  98. ;Returns:  Nothing.
  99.  
  100. _libErrorMessage:
  101.     cmp.l    #ERR_END,d0    ;d0 = If (Code < 0) or (Code > ERR_END-1).
  102.     bcc.s    .exit    ;>> = Error/Unrecognised.
  103.     tst.w    gb_BlitterUsed(a6)    ;Has the blitter been grabbed and not
  104.     beq.s    .message    ;returned?  If so we better free it before
  105.     MOVEM.L    D0-D7/A0-A6,-(SP)    ;SP = Save used registers.
  106.     move.l    _GFXBase,a6    ;a6 = Graphics base.
  107.     CALL    DisownBlitter    ;>> = Disown the blitter.
  108.     bsr.s    .message    ;>> = Print message.
  109.     move.l    _GFXBase,a6    ;a6 = Graphics base.
  110.     CALL    OwnBlitter    ;>> = Get back blitter.
  111.     MOVEM.L    (SP)+,D0-D7/A0-A6    ;SP = Return used registers.
  112. .exit    rts
  113.  
  114. .message
  115.     MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  116.     move.l    _SysBase,a6    ;a6 = Exec Base.
  117.     CALL    Forbid    ;>> = Halt all tasks for a moment.
  118.     bsr    Stepper    ;>> = Function stepper.
  119.     lea    TXT_ErrorCode(pc),a0    ;a0 = "ErrorCode:"
  120.     bsr    WriteBold    ;>> = Write it out.
  121.     lea    ErrorList(pc),a0    ;a0 = Pointer to debug list.
  122.     add.l    d0,d0    ;d0 = *2
  123.     add.l    d0,d0    ;d0 = *4
  124.     move.l    (a0,d0.l),a0    ;a0 = Text for this type.
  125.     bsr    WText    ;>> = Write it out.
  126.     bsr    NewLine    ;>> = Write new line.
  127.     move.l    _SysBase,a6    ;a6 = Exec Base.
  128.     CALL    Permit    ;>> = Give back multi-tasking.
  129.     MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  130.     rts
  131.  
  132. ;===================================================================================;
  133. ;                           STEP BACK AN ENTRY
  134. ;===================================================================================;
  135. ;Function: Used to step back an entry after STEP has been specified.
  136. ;Requires: Nothing.
  137. ;Returns:  Nothing.
  138.  
  139. _libStepBack:
  140.     MOVEM.L    A0/D0,-(SP)    ;SP = Save used registers.
  141.     CALL    FindGMSTask    ;>> = Find this task.
  142.     tst.l    d0
  143.     beq.s    .done
  144.     move.l    d0,a0    ;a0 = Task node pointer.
  145.     subq.w    #1,GT_DebugStep(a0)    ;a0 = (DebugStep)-1
  146. .done    MOVEM.L    (SP)+,A0/D0    ;SP = Return used registers.
  147.     rts
  148.  
  149. ;===================================================================================;
  150. ;                                PRINTING FUNCTIONS
  151. ;===================================================================================;
  152.  
  153. PRINT_Error:
  154.     lea    TXT_Error(pc),a0
  155.     bsr    WriteBold
  156.     move.l    a5,a0    ;a0 = Message
  157.     bsr    WText    ;>> = Write it out.
  158.     rts
  159.  
  160. PRINT_Formatted:
  161.     lea    TXT_Formatted(pc),a0
  162.     bsr    WriteBold
  163.     move.l    a5,a0    ;a0 = Message
  164.     bsr    WText    ;>> = Write it out.
  165.     rts
  166.  
  167. PRINT_BoldMessage:
  168.     lea    TXT_Message(pc),a0
  169.     bsr    WriteBold
  170.     move.l    a5,a0    ;a0 = Message
  171.     bsr    WText    ;>> = Write it out.
  172.     rts
  173.  
  174. PRINT_Message:
  175.     lea    TXT_Message(pc),a0
  176.     bsr    WriteFirst
  177.     move.l    a5,a0    ;a0 = Message
  178.     bsr    WText    ;>> = Write it out.
  179.     rts
  180.  
  181. ;-----------------------------------------------------------------------------------;
  182. ;                             MISCELLANEOUS FUNCTIONS
  183. ;-----------------------------------------------------------------------------------;
  184.  
  185. PRINT_AddInputHandler:
  186.     lea    TXT_AddInputHandler(pc),a0
  187.     bsr    WriteFirst
  188.     rts
  189.  
  190. PRINT_RemInputHandler:
  191.     lea    TXT_RemInputHandler(pc),a0
  192.     bsr    WriteFirst
  193.     rts
  194.  
  195. PRINT_Switch:
  196.     lea    TXT_Switch(pc),a0
  197.     bsr    WriteFirst
  198.     rts
  199.  
  200. PRINT_FindGMSTask:
  201.     lea    TXT_FindGMSTask(pc),a0
  202.     bsr    WriteFirst
  203.     rts
  204.  
  205. PRINT_AllocAudio:
  206.     lea    TXT_AllocAudio(pc),a0
  207.     bsr    WriteFirst
  208.     rts
  209.  
  210. PRINT_FreeAudio:
  211.     lea    TXT_FreeAudio(pc),a0
  212.     bsr    WriteFirst
  213.     rts
  214.  
  215. PRINT_GMSOpened:
  216.     lea    TXT_GMSOpened(pc),a0
  217.     bsr    WriteWhite
  218.     rts
  219.  
  220. PRINT_GMSClosed:
  221.     lea    TXT_GMSClosed(pc),a0
  222.     bsr    WriteWhite
  223.     rts
  224.  
  225. PRINT_AddInterrupt:
  226.     lea    TXT_AddInterrupt(pc),a0
  227.     bsr    WriteFirst
  228.     rts
  229.  
  230. PRINT_RemInterrupt:
  231.     lea    TXT_RemInterrupt(pc),a0
  232.     bsr    WriteFirst
  233.     rts
  234.  
  235. PRINT_RemoveGPI:
  236.     lea    TXT_RemoveGPI(pc),a0
  237.     bsr    WriteFirst
  238.     rts
  239.  
  240. PRINT_OpenGPI:
  241.     lea    TXT_OpenGPI(pc),a0
  242.     bsr    WriteFirst
  243.     rts
  244.  
  245. PRINT_SmartUnpack:
  246.     lea    TXT_SmartUnpack(pc),a0
  247.     bsr    WriteFirst
  248.     rts
  249.  
  250. PRINT_SetUserPrefs:
  251.     move.l    a0,a1
  252.     lea    TXT_SetUserPrefs(pc),a0
  253.     bsr    WriteFirst
  254.     lea    TXT_Name(pc),a0    ;a0 = "Name: "
  255.     bsr    WriteText
  256.     cmp.l    #$00,a1    ;a1 = Name given?
  257.     beq.s    .unspecified
  258.     move.l    a1,a0
  259.     bra    WriteText
  260. .unspecified
  261.     lea    TXT_Unspecified(pc),a0
  262.     bra    WriteText
  263.  
  264. PRINT_InitCards:
  265.     lea    TXT_InitCards(pc),a0
  266.     bra    WriteFirst
  267.  
  268. PRINT_FreeCards:
  269.     lea    TXT_FreeCards(pc),a0
  270.     bra    WriteFirst
  271.  
  272. PRINT_GetCardInfo:
  273.     lea    TXT_GetCardInfo(pc),a0
  274.     bra    WriteFirst
  275.  
  276. PRINT_SelfDestruct:
  277.     lea    TXT_SelfDestruct(pc),a0
  278.     bra    WriteFirst
  279.  
  280. PRINT_Armageddon:
  281.     lea    TXT_Armageddon(pc),a0
  282.     bra    WriteFirst
  283.  
  284. PRINT_FingerOfDeath:
  285.     lea    TXT_FingerOfDeath(pc),a0
  286.     bra    WriteFirst
  287.  
  288. PRINT_InitDestruct:
  289.     lea    TXT_InitDestruct(pc),a0
  290.     bra    WriteFirst
  291.  
  292. PRINT_Awaken:
  293.     lea    TXT_Awaken(pc),a0
  294.     bsr    WriteFirst
  295.     lea    TXT_Task(pc),a0
  296.     bsr    WriteText
  297.     move.l    a1,d0
  298.     bra    WriteHex
  299.  
  300. ;-----------------------------------------------------------------------------------;
  301. ;                                 SOUND FUNCTIONS
  302. ;-----------------------------------------------------------------------------------;
  303.  
  304. PRINT_InitSound:
  305.     move.l    a0,d0
  306.     lea    TXT_InitSound(pc),a0
  307.     bsr    WriteFirst
  308.     lea    TXT_SoundAddr(pc),a0
  309.     bsr    WriteText
  310.     bra    WriteHex
  311.  
  312. PRINT_FreeSound:
  313.     move.l    a0,d0
  314.     lea    TXT_FreeSound(pc),a0
  315.     bsr    WriteFirst
  316.     lea    TXT_SoundAddr(pc),a0
  317.     bsr    WriteText
  318.     bra    WriteHex
  319.  
  320. ;-----------------------------------------------------------------------------------;
  321. ;                                BLITTER FUNCTIONS
  322. ;-----------------------------------------------------------------------------------;
  323.  
  324. PRINT_AllocBlitter:
  325.     lea    TXT_AllocBlitter(pc),a0
  326.     bra    WriteFirst
  327.  
  328. PRINT_FreeBlitter:
  329.     lea    TXT_FreeBlitter(pc),a0
  330.     bra    WriteFirst
  331.  
  332. PRINT_InitBob:
  333.     move.l    a0,d0
  334.     lea    TXT_InitBob(pc),a0    ;a0 = "InitBob()"
  335.     bsr    WriteFirst
  336.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  337.     bsr    WriteText
  338.     bsr    WriteHex
  339.     lea    TXT_BobAddr(pc),a0    ;a0 = "Bob: $"
  340.     bsr    WriteText
  341.     move.l    a1,d0    ;d0 = Bob Address.
  342.     bra    WriteHex
  343.  
  344. PRINT_FreeBob:
  345.     lea    TXT_FreeBob(pc),a0    ;a0 = "FreeBob()"
  346.     bsr    WriteFirst
  347.     lea    TXT_BobAddr(pc),a0    ;a0 = "Bob: $"
  348.     bsr    WriteText
  349.     move.l    a1,d0    ;d0 = Bob Address.
  350.     bra    WriteHex
  351.  
  352. PRINT_InitMap:
  353.     lea    TXT_InitMap(pc),a0
  354.     bsr    WriteFirst
  355.     rts
  356.  
  357. PRINT_FreeMap:
  358.     lea    TXT_FreeMap(pc),a0
  359.     bsr    WriteFirst
  360.     rts
  361.  
  362. PRINT_CreateMasks:
  363.     lea    TXT_CreateMasks(pc),a0
  364.     bsr    WriteFirst
  365.     rts
  366.  
  367. PRINT_GetBitmap:
  368.     lea    TXT_GetBitmap(pc),a0
  369.     bsr    WriteFirst
  370.     rts
  371.  
  372. PRINT_InitBitmap:
  373.     lea    TXT_InitBitmap(pc),a0
  374.     bsr    WriteFirst
  375.     rts
  376.  
  377. PRINT_FreeBitmap:
  378.     lea    TXT_FreeBitmap(pc),a0
  379.     bsr    WriteFirst
  380.     rts
  381.  
  382. PRINT_SetBobFrames:
  383.     lea    TXT_SetBobFrames(pc),a0
  384.     bsr    WriteFirst
  385.     rts
  386.  
  387. ;-----------------------------------------------------------------------------------;
  388. ;                              RESTORELIST FUNCTIONS
  389. ;-----------------------------------------------------------------------------------;
  390.  
  391. PRINT_InitRestore:
  392.     lea    TXT_InitRestore(pc),a0
  393.     bsr    WriteFirst
  394.     lea    TXT_AmtBuffers(pc),a0    ;a0 = "AmtBuffers: "
  395.     bsr    WriteText    ;>> = Write.
  396.     bsr    WriteDec    ;>> = Write out amount of buffers in d0.
  397.     lea    TXT_AmtEntries(pc),a0    ;a0 = ", AmtEntries: "
  398.     bsr    WriteText    ;>> = Write text.
  399.     move.l    d1,d0    ;d0 = Amount Entries.
  400.     bra    WriteDec    ;>> = Write out amount of entries.
  401.  
  402. PRINT_ResetRestore:
  403.     lea    TXT_ResetRestore(pc),a0
  404.     bsr    WriteFirst
  405.     lea    TXT_RestoreAddr(pc),a0    ;a0 = "Restorelist: $"
  406.     bsr    WriteText    ;>> = Write.
  407.     move.l    a1,d0    ;d0 = Pointer to restorelist.
  408.     bra    WriteHex    ;>> = Write.
  409.  
  410. PRINT_FreeRestore:
  411.     lea    TXT_FreeRestore(pc),a0
  412.     bsr    WriteFirst
  413.     lea    TXT_RestoreAddr(pc),a0    ;a0 = "Restorelist: $"
  414.     bsr    WriteText    ;>> = Write.
  415.     bra    WriteHex    ;>> = Write out address in d0.
  416.  
  417. ;-----------------------------------------------------------------------------------;
  418. ;                               PICTURE MANIPULATION
  419. ;-----------------------------------------------------------------------------------;
  420.  
  421. PRINT_LoadPic:
  422.     lea    TXT_LoadPic(pc),a0
  423.     bsr    WriteFirst
  424.     lea    TXT_PictureAddr(pc),a0    ;a0 = "Picture: $"
  425.     bsr.s    WriteText    ;>> = Write.
  426.     move.l    a1,d0    ;d0 = Address of picture.
  427.     bra    WriteHex    ;>> = Write.
  428.  
  429. PRINT_FreePic:
  430.     lea    TXT_FreePic(pc),a0
  431.     bsr    WriteFirst
  432.     lea    TXT_PictureAddr(pc),a0    ;a0 = "Picture: $"
  433.     bsr.s    WriteText    ;>> = Write.
  434.     move.l    a1,d0    ;d0 = Address of picture.
  435.     bra    WriteHex    ;>> = Write.
  436.  
  437. PRINT_GetPicInfo:
  438.     lea    TXT_GetPicInfo(pc),a0
  439.     bsr    WriteFirst
  440.     lea    TXT_PictureAddr(pc),a0    ;a0 = "Picture: $"
  441.     bsr.s    WriteText    ;>> = Write.
  442.     move.l    a1,d0    ;d0 = Address of picture.
  443.     bra    WriteHex    ;>> = Write.
  444.  
  445. PRINT_UnpackPic:
  446.     lea    TXT_UnpackPic(pc),a0
  447.     bsr    WriteFirst
  448.     lea    TXT_PictureAddr(pc),a0    ;a0 = "Picture: $"
  449.     bsr.s    WriteText    ;>> = Write.
  450.     move.l    a1,d0    ;d0 = Address of picture.
  451.     bra    WriteHex    ;>> = Write.
  452.  
  453. ;-----------------------------------------------------------------------------------;
  454. ;                                 SCREEN HANDLING
  455. ;-----------------------------------------------------------------------------------;
  456.  
  457. PRINT_ShowScreen:
  458.     move.l    a0,a1    ;a1 = Save GameScreen
  459.     lea    TXT_ShowScreen(pc),a0
  460.     bsr    WriteFirst
  461.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  462.     bsr    WriteText    ;>> = Write it out.
  463.     move.l    a1,d0    ;d0 = Adddress of screen.
  464.     bra    WriteHex    ;>> = Write it out.
  465.  
  466. PRINT_DeleteScreen:
  467.     move.l    a0,a1    ;a1 = Save GameScreen
  468.     lea    TXT_DeleteScreen(pc),a0
  469.     bsr    WriteFirst
  470.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  471.     bsr    WriteText    ;>> = Write it out.
  472.     move.l    a1,d0    ;d0 = Adddress of screen.
  473.     bra    WriteHex    ;>> = Write it out.
  474.  
  475. PRINT_AddScreen:
  476.     move.l    a0,a1    ;a1 = Save GameScreen
  477.     lea    TXT_AddScreen(pc),a0
  478.     bsr    WriteFirst
  479.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  480.     bsr    WriteText    ;>> = Write it out.
  481.     move.l    a1,d0    ;d0 = Adddress of screen.
  482.     bra    WriteHex    ;>> = Write it out.
  483.  
  484. PRINT_HideScreen:
  485.     move.l    a0,a1
  486.     lea    TXT_HideScreen(pc),a0
  487.     bsr    WriteFirst
  488.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  489.     bsr    WriteText    ;>> = Write it out.
  490.     move.l    a1,d0    ;d0 = Adddress of screen.
  491.     bra    WriteHex    ;>> = Write it out.
  492.  
  493. PRINT_MoveToBack:
  494.     move.l    a0,a1
  495.     lea    TXT_MoveToBack(pc),a0
  496.     bsr    WriteFirst
  497.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  498.     bsr    WriteText
  499.     move.l    a1,d0
  500.     bra    WriteHex
  501.  
  502. PRINT_MoveToFront:
  503.     move.l    a0,a1
  504.     lea    TXT_MoveToFront(pc),a0
  505.     bsr    WriteFirst
  506.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  507.     bsr    WriteText
  508.     move.l    a1,d0
  509.     bra    WriteHex
  510.  
  511. PRINT_TakeDisplay:
  512.     move.l    a0,a1
  513.     lea    TXT_TakeDisplay(pc),a0
  514.     bsr    WriteFirst
  515.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  516.     bsr    WriteText
  517.     move.l    a1,d0
  518.     bra    WriteHex
  519.  
  520. PRINT_ReturnDisplay:
  521.     move.l    a0,a1
  522.     lea    TXT_ReturnDisplay(pc),a0
  523.     bra    WriteFirst
  524.  
  525. PRINT_BlankOn:
  526.     lea    TXT_BlankOn(pc),a0
  527.     bra    WriteFirst
  528.  
  529. PRINT_BlankOff:
  530.     lea    TXT_BlankOff(pc),a0
  531.     bra    WriteFirst
  532.  
  533. ;-----------------------------------------------------------------------------------;
  534. ;                                   RASTERLISTS
  535. ;-----------------------------------------------------------------------------------;
  536.  
  537. PRINT_InitRasterlist:
  538.     move.l    a0,a1    ;a1 = Save GameScreen.
  539.     lea    TXT_InitRasterlist(pc),a0
  540.     bsr    WriteFirst
  541.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  542.     bsr    WriteText    ;>> = Write.
  543.     move.l    a1,d0    ;d0 = Address of screen.
  544.     bsr    WriteHex    ;>> = Write.
  545.     lea    TXT_RasterAddr(pc),a0    ;a0 = "Rasterlist: $"
  546.     bsr    WriteText    ;>> = Write.
  547.     move.l    GS_Rasterlist(a1),d0    ;d0 = Address of rasterlist.
  548.     bra    WriteHex    ;>> = Write.
  549.  
  550. PRINT_HideRasterlist:
  551.     move.l    a0,a1    ;a1 = Save GameScreen.
  552.     lea    TXT_HideRasterlist(pc),a0
  553.     bsr    WriteFirst
  554.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  555.     bsr    WriteText    ;>> = Write.
  556.     move.l    a1,d0    ;d0 = Address of screen.
  557.     bsr    WriteHex    ;>> = Write.
  558.     lea    TXT_RasterAddr(pc),a0    ;a0 = "Rasterlist: $"
  559.     bsr    WriteText    ;>> = Write.
  560.     move.l    GS_Rasterlist(a1),d0    ;d0 = Address of rasterlist.
  561.     bra    WriteHex    ;>> = Write.
  562.  
  563. PRINT_ShowRasterlist:
  564.     move.l    a0,a1    ;a1 = Save GameScreen.
  565.     lea    TXT_ShowRasterlist(pc),a0
  566.     bsr    WriteFirst
  567.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  568.     bsr    WriteText    ;>> = Write.
  569.     move.l    a1,d0    ;d0 = Address of screen.
  570.     bsr    WriteHex    ;>> = Write.
  571.     lea    TXT_RasterAddr(pc),a0    ;a0 = "Rasterlist: $"
  572.     bsr    WriteText    ;>> = Write.
  573.     move.l    GS_Rasterlist(a1),d0    ;d0 = Address of rasterlist.
  574.     bra    WriteHex    ;>> = Write.
  575.  
  576. PRINT_RemoveRasterlist:
  577.     move.l    a0,a1    ;a1 = Save GameScreen.
  578.     lea    TXT_RemoveRasterlist(pc),a0
  579.     bsr    WriteFirst
  580.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  581.     bsr    WriteText    ;>> = Write.
  582.     move.l    a1,d0    ;d0 = Address of screen.
  583.     bsr    WriteHex    ;>> = Write.
  584.     lea    TXT_RasterAddr(pc),a0    ;a0 = "Rasterlist: $"
  585.     bsr    WriteText    ;>> = Write.
  586.     move.l    GS_Rasterlist(a1),d0    ;d0 = Address of rasterlist.
  587.     bra    WriteHex    ;>> = Write.
  588.  
  589. ;-----------------------------------------------------------------------------------;
  590. ;                                OBJECT FUNCTIONS
  591. ;-----------------------------------------------------------------------------------;
  592.  
  593. PRINT_GetObject:
  594.     lea    TXT_GetObject(pc),a0
  595.     bsr    WriteFirst
  596.     rts
  597.  
  598. PRINT_GetObjectList:
  599.     lea    TXT_GetObjectList(pc),a0
  600.     bsr    WriteFirst
  601.     rts
  602.  
  603. PRINT_LoadObjectFile:
  604.     lea    TXT_LoadObjectFile(pc),a0
  605.     bsr    WriteFirst
  606.     rts
  607.  
  608. PRINT_FreeObjectFile:
  609.     lea    TXT_FreeObjectFile(pc),a0
  610.     bsr    WriteFirst
  611.     rts
  612.  
  613. ;-----------------------------------------------------------------------------------;
  614. ;                                MEMORY FUNCTIONS
  615. ;-----------------------------------------------------------------------------------;
  616.  
  617. PRINT_AllocBlitMem:
  618.     lea    TXT_AllocBlitMem(pc),a0
  619.     bsr    WriteFirst
  620.     bsr.s    Alloc
  621.     lea    TXT_MemBlit(pc),a0
  622.     bra    WriteText
  623.  
  624. PRINT_AllocVideoMem:
  625.     lea    TXT_AllocVideoMem(pc),a0
  626.     bsr    WriteFirst
  627.     bsr.s    Alloc
  628.     lea    TXT_MemVideo(pc),a0
  629.     bra    WriteText
  630.  
  631. PRINT_AllocSoundMem:
  632.     lea    TXT_AllocSoundMem(pc),a0
  633.     bsr    WriteFirst
  634.     bsr.s    Alloc
  635.     lea    TXT_MemSound(pc),a0
  636.     bra    WriteText
  637.  
  638. PRINT_AllocMemBlock:
  639.     lea    TXT_AllocMemBlock(pc),a0
  640.     bsr    WriteFirst
  641.     bsr.s    Alloc
  642.     lea    TXT_MemData(pc),a0
  643.     bra    WriteText
  644.  
  645. PRINT_FreeMemBlock:
  646.     lea    TXT_FreeMemBlock(pc),a0
  647.     bsr    WriteFirst
  648.     lea    TXT_Address(pc),a0    ;a0 = "Address: $"
  649.     bsr    WriteText    ;>> = Write it out.
  650.     bsr    WriteHex    ;>> = Write out address in d0.
  651.     lea    TXT_Size(pc),a0    ;a0 = "Size : "
  652.     bsr    WriteText    ;>> = Write it out.
  653.     move.l    d0,a0    ;d0 = Address of memory block.
  654.     move.l    -12(a0),d0    ;d0 = Size of block.
  655.     bra    WriteDec    ;>> = Write it out.
  656.  
  657. Alloc:    lea    TXT_Size(pc),a0    ;a0 = "Size: "
  658.     bsr    WriteText    ;>> = Write text.
  659.     bra    WriteDec    ;>> = Write out size in d0.
  660.  
  661. ;-----------------------------------------------------------------------------------;
  662. ;                             STRUCTURE MANIPULATION
  663. ;-----------------------------------------------------------------------------------;
  664.  
  665. PRINT_GetBob:
  666.     lea    TXT_GetBob(pc),a0
  667.     bra    WriteFirst
  668.  
  669. PRINT_GetPicture:
  670.     lea    TXT_GetPicture(pc),a0
  671.     bra    WriteFirst
  672.  
  673. PRINT_GetScreen:
  674.     lea    TXT_GetScreen(pc),a0
  675.     bra    WriteFirst
  676.  
  677. PRINT_GetMBob:
  678.     lea    TXT_GetMBob(pc),a0
  679.     bra    WriteFirst
  680.  
  681. PRINT_GetSound:
  682.     lea    TXT_GetSound(pc),a0
  683.     bra    WriteFirst
  684.  
  685. PRINT_GetStructure:
  686.     lea    TXT_GetStructure(pc),a0
  687.     bsr    WriteFirst
  688.     lea    TXT_ID(pc),a0    ;a0 = "ID: "
  689.     bsr.s    WriteText    ;>> = Write.
  690.  
  691.     swap    d0    ;d0 = "IDTG" or "XXID"
  692.     cmp.w    #"TG",d0    ;d0 = Is it a specified taglist?
  693.     bne.s    .chkBob    ;>> = No, must be of type XXID.
  694.     swap    d0    ;d0 = "TGID"
  695.  
  696. .chkBob    cmp.w    #ID_BOB,d0
  697.     bne.s    .chkMBob
  698.     lea    .Bob(pc),a0
  699.     bra    WriteText
  700.  
  701. .chkMBob
  702.     cmp.w    #ID_MBOB,d0
  703.     bne.s    .chkGameScreen
  704.     lea    .MBob(pc),a0
  705.     bra    WriteText
  706.  
  707. .chkGameScreen
  708.     cmp.w    #ID_GAMESCREEN,d0
  709.     bne.s    .chkPicture
  710.     lea    .GameScreen(pc),a0
  711.     bra    WriteText
  712.  
  713. .chkPicture
  714.     cmp.w    #ID_PICTURE,d0
  715.     bne.s    .chkCardSet
  716.     lea    .Picture(pc),a0
  717.     bra    WriteText
  718.  
  719. .chkCardSet
  720.     cmp.w    #ID_CARDSET,d0
  721.     bne.s    .chkAnimation
  722.     lea    .CardSet(pc),a0
  723.     bra    WriteText
  724.  
  725. .chkAnimation
  726.     cmp.w    #ID_ANIM,d0
  727.     bne.s    .chkMovie
  728.     lea    .Animation(pc),a0
  729.     bra    WriteText
  730.  
  731. .chkMovie
  732. ;    cmp.w    #ID_MOVIE,d0
  733. ;    bne.s    .chkSound
  734. ;    lea    .Movie(pc),a0
  735. ;    bra    WriteText
  736.  
  737. .chkSound
  738.     cmp.w    #ID_SOUND,d0
  739.     bne.s    .chkInvalid
  740.     lea    .Sound(pc),a0
  741.     bra    WriteText
  742.  
  743. .chkInvalid
  744.     lea    .Invalid(pc),a0
  745.     bra    WriteText
  746.  
  747. .Bob        dc.b  "Bob",0
  748. .MBob        dc.b  "MBob",0
  749. .GameScreen    dc.b  "GameScreen",0
  750. .Picture    dc.b  "Picture",0
  751. .CardSet    dc.b  "CardSet",0
  752. .Animation    dc.b  "Animation",0
  753. .Movie        dc.b  "Movie",0
  754. .Sound        dc.b  "Sound",0
  755. .Invalid    dc.b  "Error - Invalid!",0
  756.         even
  757.  
  758. PRINT_FreeStructure:
  759.     lea    TXT_FreeStructure(pc),a0
  760.     bsr    WriteFirst
  761.     move.l    a0,a1    ;a1 = Save structure.
  762.     lea    TXT_Structure(pc),a0    ;a0 = "Structure: $"
  763.     bsr    WriteText
  764.     move.l    a1,d0    ;d0 = Structure address.
  765.     bra    WriteHex
  766.  
  767. ;-----------------------------------------------------------------------------------;
  768. ;                                    FILE I/O
  769. ;-----------------------------------------------------------------------------------;
  770.  
  771. PRINT_SmartSave:
  772.     lea    TXT_SmartSave(pc),a0
  773.     bsr    WriteFirst
  774.     move.l    d0,d1    ;d1 = Save length.
  775.     bsr    WriteText    ;>> = Write out filename in a0.
  776.     lea    TXT_CSource(pc),a0    ;a0 = ", Source: $"
  777.     bsr    WriteText    ;>> = Write text.
  778.     move.l    a1,d0    ;d0 = Address of source.
  779.     bsr    WriteHex    ;>> = Write as hex.
  780.     lea    TXT_SourceLen(pc),a0    ;a0 = "Length: "
  781.     bsr    WriteText    ;>> = Write text.
  782.     move.l    d1,d0    ;d0 = Length.
  783.     bra    WriteDec    ;>> = Write as decimals.
  784.  
  785. PRINT_OpenFile:
  786.     move.l    a0,a1
  787.     lea    TXT_OpenFile(pc),a0
  788.     bsr    WriteFirst
  789.     move.l    a1,a0
  790.     bsr.s    WriteText    ;>> = Write out filename in a0.
  791.     lea    TXT_Flags(pc),a0    ;a0 = ", Flags: $"
  792.     bsr.s    WriteText
  793.     bra    WriteHex    ;>> = Write out hex flags in d0.
  794.  
  795. PRINT_CloseFile:
  796.     lea    TXT_CloseFile(pc),a0
  797.     bsr    WriteFirst
  798.     move.l    a0,a1    ;a1 = Save file structure.
  799.     lea    TXT_FileBase(pc),a0    ;a0 = "FileBase: $"
  800.     bsr.s    WriteText
  801.     move.l    a1,d0    ;d0 = Structure address.
  802.     bra    WriteHex
  803.  
  804. PRINT_SmartLoad:
  805.     move.l    a0,a3
  806.     lea    TXT_SmartLoad(pc),a0
  807.     bsr    WriteFirst
  808.     move.l    a3,a0
  809.     bsr    WriteText    ;>> = Write out filename.
  810.     lea    TXT_CDest(pc),a0    ;a0 = "Dest: $"
  811.     bsr    WriteText
  812.     cmp.l    #$00,a1    ;a1 = Destination given?
  813.     beq.s    .alloc    ;>> = No, allocate destination.
  814.     move.l    a1,d0    ;d0 = Destination address.
  815.     bra    WriteHex
  816. .alloc    lea    TXT_Allocated(pc),a0    ;a0 = "Allocated"
  817.     bra    WriteText
  818.  
  819. PRINT_QuickLoad:
  820.     move.l    a0,a3
  821.     lea    TXT_QuickLoad(pc),a0
  822.     bsr    WriteFirst
  823.     move.l    a3,a0
  824.     bsr    WriteText    ;>> = Write out filename.
  825.     lea    TXT_CDest(pc),a0    ;a0 = "Dest: $"
  826.     bsr    WriteText
  827.     cmp.l    #$00,a1    ;a1 = Destination given?
  828.     beq.s    .alloc    ;>> = No, allocate destination.
  829.     move.l    a1,d0    ;d0 = Destination address.
  830.     bra    WriteHex
  831. .alloc    lea    TXT_Allocated(pc),a0    ;a0 = "Allocated"
  832.     bra    WriteText
  833.  
  834. ;===================================================================================;
  835. ;                                NEW LINE
  836. ;===================================================================================;
  837.  
  838. NewLine:
  839.     MOVEM.L    D0-D7/A0-A6,-(SP)    ;SP = Save used registers.
  840.     move.l    _DOSBase,a6    ;a6 = DOSBase.
  841.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  842.     move.l    #TXT_NewLine,d2    ;d2 = Start of string.
  843.     moveq    #1,d3    ;d3 = One character.
  844.     CALL    Write    ;>> = Write out the string.
  845.     MOVEM.L    (SP)+,D0-D7/A0-A6    ;SP = Return used registers.
  846.     rts
  847.  
  848. ;===================================================================================;
  849. ;                            FUNCTION STEPPER
  850. ;===================================================================================;
  851.  
  852. Stepper:
  853.     MOVEM.L    D0-D7/A0-A6,-(SP)    ;SP = Save used registers.
  854.     move.l    _GMSBase,a6    ;a6 = GMSBase
  855.     CALL    FindGMSTask    ;>> = Find this task.
  856.     tst.l    d0    ;d0 = Check if node exists.
  857.     beq.s    .done    ;>> = No, exit...
  858.     move.l    d0,a0    ;a0 = GMS task node.
  859.  
  860.     move.w    GT_DebugStep(a0),d4    ;d4 = Amount of spaces to step.
  861.     beq.s    .done    ;>> = No spaces, exit.
  862.     blt.s    .error    ;>> = Error...
  863.  
  864.     move.l    _DOSBase,a6    ;a6 = DOSBase.
  865.     subq.w    #1,d4    ;d4 = (Step)-1 [for loop]
  866. .loop    move.l    _conhandle,d1    ;d1 = Window to output Text.
  867.     move.l    #TXT_Space,d2    ;d2 = Start of string.
  868.     moveq    #1,d3    ;d3 = One character.
  869.     CALL    Write    ;>> = Write out the string.
  870.     dbra    d4,.loop    ;d4 = --1 and loop.
  871. .done    MOVEM.L    (SP)+,D0-D7/A0-A6    ;SP = Return used registers.
  872.     rts
  873.  
  874. .error    move.l    _DOSBase,a6    ;a6 = DOSBase.
  875.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  876.     move.l    #.XXX,d2    ;d2 = Start of string.
  877.     moveq    #1,d3    ;d3 = One character.
  878.     CALL    Write    ;>> = Write out the string.
  879.     MOVEM.L    (SP)+,D0-D7/A0-A6    ;SP = Return used registers.
  880.     rts
  881.  
  882. .XXX    dc.b    "X"
  883.     even
  884.  
  885. ;===================================================================================;
  886. ;                            OUTPUT Text TO OUR WINDOW
  887. ;===================================================================================;
  888. ;Internal: Writes a string of Text to our window.
  889. ;Requires: a0 = Text string.
  890. ;Returns:  Nothing.
  891.  
  892. MAXLETTERS =    23
  893.  
  894. WriteBold:
  895.     MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  896.     move.l    a0,a3    ;a3 = Save pointer to text to write.
  897.     move.l    _DOSBase,a6    ;a6 = DOSBase.
  898.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  899.     move.l    #TXT_Bold,d2    ;d2 = Start of string.
  900.     moveq    #4,d3    ;d3 = (EndString)-StartString [Length]
  901.     CALL    Write    ;>> = Write out the string.
  902.     bra.s    WSkip
  903.  
  904. WriteWhite:
  905.     MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  906.     move.l    a0,a3    ;a3 = Save pointer to text to write.
  907.     move.l    _DOSBase,a6    ;a6 = DOSBase.
  908.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  909.     move.l    #TXT_White,d2    ;d2 = Start of string.
  910.     moveq    #5,d3    ;d3 = (EndString)-StartString [Length]
  911.     CALL    Write    ;>> = Write out the string.
  912.     bra.s    WSkip    ;>> = Skip into routine.
  913.  
  914. WriteFirst:
  915.     MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  916.     move.l    a0,a3    ;a3 = Save pointer to text to write.
  917.     move.l    _DOSBase,a6    ;a6 = DOSBase.
  918.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  919.     move.l    #TXT_Flat,d2    ;d2 = Start of string.
  920.     moveq    #4,d3    ;d3 = (EndString)-StartString [Length]
  921.     CALL    Write    ;>> = Write out the string.
  922.  
  923. WSkip:    move.l    _GMSBase,a6    ;a6 = GMSBase.
  924.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  925.     move.l    a3,d2    ;d2 = Start of string.
  926.     moveq    #-1,d3    ;d3 = -1 [length]
  927. .count    addq.l    #1,d3    ;d3 = ++1
  928.     tst.b    (a3)+    ;a3 = End of string?
  929.     bne.s    .count    ;>> = Keep looping.
  930.  
  931.     moveq    #MAXLETTERS,d5    ;d5 = MaxLetters
  932.     sub.l    d3,d5    ;d5 = (MaxLetters)-TextLength
  933.  
  934.     move.l    _GMSBase,a6
  935.     CALL    FindGMSTask
  936.     tst.l    d0
  937.     beq.s    .under
  938.     move.l    d0,a0    ;a0 = GMS Task.
  939.  
  940.     moveq    #$00,d6
  941.     move.w    GT_DebugStep(a0),d6
  942.     sub.l    d6,d5    ;d5 = (MaxLetters-TextLength)-Stepped
  943.     bge.s    .under    ;>> = Under the maximum amount.
  944.     add.l    d5,d3    ;d3 = (Length)-Overflow
  945. .under    move.l    _DOSBase,a6    ;a6 = DOSBase.
  946.     CALL    Write    ;>> = Write out the string.
  947.  
  948. .spaces    subq.l    #1,d5
  949.     blt.s    .done
  950.     move.l    _conhandle,d1    ;d1 = Output.
  951.     move.l    #TXT_Space,d2    ;d2 = Start of text.
  952.     moveq    #1,d3    ;d3 = 1 character.
  953.     CALL    Write    ;>> = Write out the string.
  954.     bra.s    .spaces    ;>> = Loop until finished.
  955. .done    MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  956.     rts
  957.  
  958. ;-----------------------------------------------------------------------------------;
  959.  
  960. WriteText:
  961.     MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  962.     move.l    _DOSBase,a6    ;a6 = DOSBase.
  963.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  964.     move.l    #TXT_Flat,d2    ;d2 = Start of string.
  965.     moveq    #4,d3    ;d3 = (EndString)-StartString [Length]
  966.     CALL    Write    ;>> = Write out the string.
  967.     MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  968.     bsr.s    WText
  969.     rts
  970.  
  971. ;-----------------------------------------------------------------------------------;
  972. ;a0 = String to write.
  973.  
  974. WText:    MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  975.     move.l    _DOSBase,a6    ;a6 = DOSBase.
  976.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  977.     move.l    a0,d2    ;d2 = Start of string.
  978. .count    tst.b    (a0)+    ;a0 = End of string?
  979.     bne.s    .count    ;>> = Keep looping.
  980.     subq.w    #1,a0    ;a0 = --1 [End of string]
  981.     move.l    a0,d3    ;d3 = End of string.
  982.     sub.l    d2,d3    ;d3 = (EndString)-StartString [Length]
  983.     CALL    Write    ;>> = Write out the string.
  984.     MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  985.     rts
  986.  
  987. ;===================================================================================;
  988. ;                      OUTPUT HEXADECIMAL Text TO OUR WINDOW
  989. ;===================================================================================;
  990. ;Internal: Outputs a longword value as hexidecimal Text.
  991. ;Requires: d0 = Value
  992. ;       d7 = AmtBytes (1-8)
  993. ;Returns:  Nothing.
  994.  
  995. WriteHex:
  996.     MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  997.     lea    .hex(pc),a0    ;a0 = Hex table.
  998.     lea    String(pc),a1    ;a1 = Text buffer.
  999.     moveq    #$00,d2
  1000.     tst.l    d0
  1001.     beq.s    .wzero
  1002.     moveq    #8-1,d7    ;d7 = (AmtBytes)-1
  1003. .loop2    rol.l    #4,d0    ;d0 = <<4 [rotate, last nibble first]
  1004.     move.l    d0,d1    ;d1 = Current value.
  1005.     and.l    #$0000000F,d1    ;d1 = (Value)&$F [nibble]
  1006.     bne.s    .write
  1007.     tst.w    d2
  1008.     beq.s    .skip
  1009. .write    move.b    (a0,d1.w),(a1)+    ;a1 = Write out the hex value.
  1010.     moveq    #$01,d2
  1011. .skip    dbra    d7,.loop2    ;d7 = --1 and loop.
  1012.     move.w    #$2000,(a1)    ;a1 = Clear the final byte.
  1013.     lea    String(pc),a0    ;a0 = Text buffer.
  1014.     bsr    WriteText    ;>> = Write it out.
  1015.     MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  1016.     rts
  1017.  
  1018. .wzero    lea    .zero(pc),a0    ;a0 = "0"
  1019.     bsr    WriteText    ;>> = Write it out.
  1020.     MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  1021.     rts
  1022.  
  1023. .zero    dc.b    "0 ",0
  1024.     even
  1025.  
  1026. .hex    dc.b    "0123456789ABCDEF"
  1027.     even
  1028.  
  1029. String:    dc.b    "                ",0
  1030.     even
  1031.  
  1032. ;===================================================================================;
  1033. ;                          WRITE DECIMAL NUMBER
  1034. ;===================================================================================;
  1035. ;Internal: Outputs a longword value as decimal Text.
  1036. ;Requires: d0 = Value
  1037. ;       d7 = AmtBytes (1-8) or -1/0.
  1038. ;Returns:  Nothing.
  1039.  
  1040. WriteDec:
  1041.     MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  1042.     moveq    #-1,d7
  1043.     move.l    _GMSBase,a6
  1044.     move.w    d7,d1
  1045.     lea    String(pc),a0
  1046.     CALL    WriteDec
  1047.     move.l    d0,a1
  1048.     move.w    #$2000,(a1)
  1049.     bsr    WriteText
  1050.     MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  1051.     rts
  1052.  
  1053. ;===================================================================================;
  1054. ;                             Text FOR PRINT ROUTINES
  1055. ;===================================================================================;
  1056.  
  1057. _GFXBase:  dc.l  0
  1058.  
  1059. TXT_RasterAddr:      WText " Rasterlist: $"
  1060. TXT_CSource:      WText ", Source: $"
  1061. TXT_CDest:      WText ", Dest: $"
  1062. TXT_SourceLen:      WText "Length: "
  1063. TXT_RestoreAddr:  WText "Restorelist: $"
  1064. TXT_AmtBuffers:      WText "AmtBuffers: "
  1065. TXT_AmtEntries:      WText ", AmtEntries: "
  1066. TXT_FileName:      WText "FileName: "
  1067. TXT_FileBase:      WText "FileBase: $"
  1068. TXT_Flags:      WText ", Flags: $"
  1069. TXT_Name:      WText "Name: "
  1070. TXT_Unknown:      WText "Unknown.  "
  1071. TXT_Unspecified:  WText "Unspecified.  "
  1072. TXT_Source:      WText "Source: $"
  1073. TXT_Allocated:      WText "Allocated.  "
  1074. TXT_Address:      WText "Address: $"
  1075. TXT_PictureAddr:  WText "Picture: $"
  1076. TXT_ScreenAddr:      WText "GameScreen: $"
  1077. TXT_BobAddr:      WText "Bob: $"
  1078. TXT_MBobAddr:      WText "MBob: $"
  1079. TXT_SoundAddr:      WText "Sound: $"
  1080. TXT_Size:      WText "Size: "
  1081. TXT_MemData:      WText "(Data)"
  1082. TXT_MemVideo:      WText "(Video)"
  1083. TXT_MemBlit:      WText "(Blit)"
  1084. TXT_MemSound:      WText "(Sound)"
  1085. TXT_ObjectBase:      WText "ObjectBase: $"
  1086. TXT_ObjectList:   WText "ObjectList: $"
  1087. TXT_Structure:      WText "Structure: $"
  1088. TXT_ID:          WText "ID: "
  1089. TXT_Task:      WText "Task: $"
  1090. TXT_Space:      WText " "
  1091. TXT_NewLine:      dc.b  10,0
  1092.  
  1093. TXT_Flat:      WText ""
  1094. TXT_Bold:      WText ""
  1095. TXT_White:      WText ""
  1096.  
  1097. GPINames:
  1098.     dc.l    .SCR_Name
  1099.     dc.l    .BLT_Name
  1100.     dc.l    .SND_Name
  1101.     dc.l    .NET_Name
  1102.     dc.l    .VEC_Name
  1103.     dc.l    .FBL_Name    ;Empty
  1104.     dc.l    .ANM_Name
  1105.     dc.l    .RKO_Name
  1106.     dc.l    .TXT_Name
  1107.     dc.l    .OBJ_Name
  1108.  
  1109. .SCR_Name    WText "Screens.GPI"
  1110. .BLT_Name    WText "Blitter.GPI"
  1111. .SND_Name    WText "Sound.GPI"
  1112. .NET_Name    WText "Network.GPI"
  1113. .VEC_Name    WText "Vectors.GPI"
  1114. .FBL_Name    WText "Fireball.GPI"
  1115. .ANM_Name    WText "Anim.GPI"
  1116. .RKO_Name    WText "Reko.GPI"
  1117. .TXT_Name    WText "Text.GPI"
  1118. .OBJ_Name    WText "Objects.GPI"
  1119.  
  1120. ;-----------------------------------------------------------------------------------;
  1121. ;                                    ERROR LIST
  1122. ;-----------------------------------------------------------------------------------;
  1123.  
  1124. ErrorList:
  1125.     dc.l    ERROR_OK
  1126.     dc.l    ERROR_NoMem
  1127.     dc.l    ERROR_NoPtr
  1128.     dc.l    ERROR_InUse
  1129.     dc.l    ERROR_Struct
  1130.     dc.l    ERROR_Failed
  1131.     dc.l    ERROR_File
  1132.     dc.l    ERROR_Data
  1133.     dc.l    ERROR_Search
  1134.     dc.l    ERROR_ScrType
  1135.     dc.l    ERROR_GPI
  1136.     dc.l    ERROR_RCommand
  1137.     dc.l    ERROR_RList
  1138.     dc.l    ERROR_NoRaster
  1139.     dc.l    ERROR_DiskFull
  1140.     dc.l    ERROR_FileMiss
  1141.     dc.l    ERROR_WrongVer
  1142.     dc.l    ERROR_Monitor
  1143.     dc.l    ERROR_Unpack
  1144.     dc.l    ERROR_Args
  1145.  
  1146. ERROR_OK:    WText "OK: No problem!"
  1147. ERROR_NoMem:    WText "NOMEM: Not enough memory available."
  1148. ERROR_NoPtr:    WText "NOPTR: A required address pointer is not present."
  1149. ERROR_InUse:    WText "INUSE: Previous allocations have not been freed."
  1150. ERROR_Struct:    WText "STRUCT: Structure version not supported or found."
  1151. ERROR_Failed:    WText "FAILED: General/Miscellaneous failure."
  1152. ERROR_File:    WText "FILE: File error, eg file not found, disk full etc."
  1153. ERROR_Data:    WText "DATA: There is an error in the given data."
  1154. ERROR_Search:    WText "SEARCH: An internal search was performed and it failed."
  1155. ERROR_ScrType:    WText "SCRTYPE: Screen Type not recognised."
  1156. ERROR_GPI:    WText "GPI: Trouble initialising a GPI."
  1157. ERROR_RCommand: WText "RASTCOMMAND: Invalid raster command detected."
  1158. ERROR_RList:    WText "RASTERLIST: Complete rasterlist failure."
  1159. ERROR_NoRaster: WText "NORASTER: Rasterlist missing from GS_Rasterlist."
  1160. ERROR_DiskFull: WText "DISKFULL: Disk full error."
  1161. ERROR_FileMiss: WText "FILEMISSING: File not found."
  1162. ERROR_WrongVer: WText "WRONGVER: Wrong version or version not supported."
  1163. ERROR_Monitor:  WText "MONITOR: Monitor driver not found or not supported."
  1164. ERROR_Unpack:   WText "UNPACK: Problem with unpacking of data."
  1165. ERROR_Args:    WText "ARGS: Invalid arguments passed to function."
  1166.  
  1167. ;-----------------------------------------------------------------------------------;
  1168. ;                                    DEBUG LIST
  1169. ;-----------------------------------------------------------------------------------;
  1170.  
  1171.     STRUCTURE    DataListEntry,0
  1172.     WORD    DL_State    ;On = 1 / Off = 0.
  1173.     APTR    DL_Print    ;Pointer to the function printer.
  1174.     LABEL    DL_SIZEOF
  1175.  
  1176.     MACRO    Entry
  1177.     dc.w    1    ;On = 1 / Off = 0.
  1178.     dc.l    PRINT_\1    ;Print function called by WriteBuffer.
  1179.     ENDM
  1180.  
  1181. _DebugList:
  1182.     Entry    Error
  1183.     Entry    Formatted
  1184.     Entry    BoldMessage
  1185.     Entry    Message
  1186.     Entry    FreeMemBlock
  1187.     Entry    AddScreen
  1188.     Entry    DeleteScreen
  1189.     Entry    OpenGPI
  1190.     Entry    RemoveGPI
  1191.     Entry    AddInputHandler
  1192.     Entry    RemInputHandler
  1193.     Entry    AddInterrupt
  1194.     Entry    RemInterrupt
  1195.     Entry    SmartLoad
  1196.     Entry    QuickLoad
  1197.     Entry    SmartUnpack
  1198.     Entry    SmartSave
  1199.     Entry    SetUserPrefs
  1200.     Entry    LoadPic
  1201.     Entry    FreePic
  1202.     Entry    InitRasterlist
  1203.     Entry    AllocBlitter
  1204.     Entry    FreeBlitter
  1205.     Entry    InitBob
  1206.     Entry    FreeBob
  1207.     Entry    InitRestore
  1208.     Entry    FreeRestore
  1209.     Entry    AllocBlitMem
  1210.     Entry    AllocVideoMem
  1211.     Entry    AllocSoundMem
  1212.     Entry    AllocAudio
  1213.     Entry    FreeAudio
  1214.     Entry    ShowScreen
  1215.     Entry    HideScreen
  1216.     Entry    InitMap
  1217.     Entry    FreeMap
  1218.     Entry    InitSound
  1219.     Entry    FreeSound
  1220.     Entry    HideRasterlist
  1221.     Entry    ShowRasterlist
  1222.     Entry    FindGMSTask
  1223.     Entry    MoveToFront
  1224.     Entry    Switch
  1225.     Entry    UnpackPic
  1226.     Entry    GetPicInfo
  1227.     Entry    GMSOpened
  1228.     Entry    GMSClosed
  1229.     Entry    ResetRestore
  1230.     Entry    RemoveRasterlist
  1231.     Entry    InitCards
  1232.     Entry    FreeCards
  1233.     Entry    GetCardInfo
  1234.     Entry    GetBob
  1235.     Entry    GetPicture
  1236.     Entry    GetScreen
  1237.     Entry    GetStructure
  1238.     Entry    GetMBob
  1239.     Entry    GetSound
  1240.     Entry    SelfDestruct
  1241.     Entry    Armageddon
  1242.     Entry    FingerOfDeath
  1243.     Entry    InitDestruct
  1244.     Entry    BlankOn
  1245.     Entry    BlankOff
  1246.     Entry    LoadObjectFile
  1247.     Entry    FreeObjectFile
  1248.     Entry    GetObjectList
  1249.     Entry    GetObject
  1250.     Entry    OpenFile
  1251.     Entry    CloseFile
  1252.     Entry    FreeStructure
  1253.     Entry    MoveToBack
  1254.     Entry    TakeDisplay
  1255.     Entry    ReturnDisplay
  1256.     Entry    Awaken
  1257.     Entry    CreateMasks
  1258.     Entry    GetBitmap
  1259.     Entry    InitBitmap
  1260.     Entry    FreeBitmap
  1261.     Entry    SetBobFrames
  1262.     Entry    AllocMemBlock
  1263.  
  1264. ;---------------------------------------------------------------------------;
  1265.  
  1266. TXT_GMSOpened:        WText "GMS OPENED        "
  1267. TXT_GMSClosed:        dc.b  "GMS CLOSED        ",10,0
  1268.               even
  1269.  
  1270. TXT_ErrorCode:          WText "ErrorCode:"
  1271. TXT_Error:          WText "Error:"
  1272. TXT_Formatted:          WText "Message:"
  1273. TXT_Message:          WText "Message:"
  1274.  
  1275. TXT_AllocMemBlock:    WText "AllocMemBlock()"
  1276. TXT_FreeMemBlock:     WText "FreeMemBlock()"
  1277. TXT_AddScreen:          WText "AddScreen()"
  1278. TXT_DeleteScreen:     WText "DeleteScreen()"
  1279. TXT_OpenGPI:          WText "OpenGPI()"
  1280. TXT_RemoveGPI:          WText "RemoveGPI()"
  1281. TXT_AddInputHandler:  WText "AddInputHandler()"
  1282. TXT_RemInputHandler:  WText "RemInputHandler()"
  1283. TXT_AddInterrupt:     WText "AddInterrupt()"
  1284. TXT_RemInterrupt:     WText "RemInterrupt()"
  1285. TXT_SmartLoad:          WText "SmartLoad()"
  1286. TXT_QuickLoad:          WText "QuickLoad()"
  1287. TXT_SmartUnpack:      WText "SmartUnpack()"
  1288. TXT_SmartSave:          WText "SmartSave()"
  1289. TXT_SetUserPrefs:     WText "SetUserPrefs()"
  1290. TXT_LoadPic:          WText "LoadPic()"
  1291. TXT_FreePic:          WText "FreePic()"
  1292. TXT_InitRasterlist:   WText "InitRasterlist()"
  1293. TXT_AllocBlitter:     WText "AllocBlitter()"
  1294. TXT_FreeBlitter:      WText "FreeBlitter()"
  1295. TXT_InitBob:          WText "InitBob()"
  1296. TXT_FreeBob:          WText "FreeBob()"
  1297. TXT_InitRestore:      WText "InitRestore()"
  1298. TXT_FreeRestore:      WText "FreeRestore()"
  1299. TXT_AllocBlitMem:     WText "AllocBlitMem()"
  1300. TXT_AllocVideoMem:    WText "AllocVideoMem()"
  1301. TXT_AllocSoundMem:    WText "AllocSoundMem()"
  1302. TXT_AllocAudio:       WText "AllocAudio()"
  1303. TXT_FreeAudio:          WText "FreeAudio()"
  1304. TXT_ShowScreen:       WText "ShowScreen()"
  1305. TXT_HideScreen:       WText "HideScreen()"
  1306. TXT_InitMap:          WText "InitMap()"
  1307. TXT_FreeMap:          WText "FreeMap()"
  1308. TXT_InitSound:          WText "InitSound()"
  1309. TXT_FreeSound:          WText "FreeSound()"
  1310. TXT_HideRasterlist:   WText "HideRasterlist()"
  1311. TXT_ShowRasterlist:   WText "ShowRasterlist()"
  1312. TXT_FindGMSTask:      WText "FindGMSTask()"
  1313. TXT_MoveToFront:      WText "MoveToFront()"
  1314. TXT_Switch:           WText "Switch()"
  1315. TXT_UnpackPic:        WText "UnpackPic()"
  1316. TXT_GetPicInfo:          WText "GetPicInfo()"
  1317. TXT_ResetRestore:     WText "ResetRestore()"
  1318. TXT_RemoveRasterlist: WText "RemoveRasterlist()"
  1319. TXT_InitCards:          WText "InitCards()"
  1320. TXT_FreeCards:          WText "FreeCards()"
  1321. TXT_GetCardInfo:      WText "GetCardInfo()"
  1322. TXT_GetBob:           WText "GetBob()"
  1323. TXT_GetPicture:       WText "GetPicture()"
  1324. TXT_GetScreen:        WText "GetScreen()"
  1325. TXT_GetStructure:     WText "GetStructure()"
  1326. TXT_GetMBob:          WText "GetMBob()"
  1327. TXT_GetSound:         WText "GetSound()"
  1328. TXT_SelfDestruct:     WText "SelfDestruct()"
  1329. TXT_Armageddon:       WText "Armageddon()"
  1330. TXT_FingerOfDeath:    WText "FingerOfDeath()"
  1331. TXT_InitDestruct:     WText "InitDestruct()"
  1332. TXT_BlankOn:          WText "BlankOn()"
  1333. TXT_BlankOff:         WText "BlankOff()"
  1334. TXT_LoadObjectFile:   WText "LoadObjectFile()"
  1335. TXT_FreeObjectFile:   WText "FreeObjectFile()"
  1336. TXT_GetObjectList:    WText "GetObjectList()"
  1337. TXT_GetObject:        WText "GetObject()"
  1338. TXT_OpenFile:          WText "OpenFile()"
  1339. TXT_CloseFile:          WText "CloseFile()"
  1340. TXT_FreeStructure:    WText "FreeStructure()"
  1341. TXT_MoveToBack:       WText "MoveToBack()"
  1342. TXT_TakeDisplay:      WText "TakeDisplay()"
  1343. TXT_ReturnDisplay:    WText "ReturnDisplay()"
  1344. TXT_Awaken:          WText "Awaken()"
  1345. TXT_CreateMasks:      WText "CreateMasks()"
  1346. TXT_GetBitmap:        WText "GetBitmap()"
  1347. TXT_InitBitmap:       WText "InitBitmap()"
  1348. TXT_FreeBitmap:       WText "FreeBitmap()"
  1349. TXT_SetBobFrames:     WText "SetBobFrames()"
  1350.  
  1351.